#ifndef INDICEHASH_H_
#define INDICEHASH_H_

#include "Indice.h"
#include "../Constantes.h"
#include "hash/Directorio.h"

#include <string>
using namespace std;

class RecursoDeAlmacenamiento;

class IndiceHash: public Indice {

private:

	Directorio directorio;

public:
	/*
	 * Pre: Parametros validos.
	 * Pos: Crea una nueva instancia.
	 */
	IndiceHash(const string& path, TipoClave* extractor, cantBytes tamanioBucket);

	/*
	 * Pre: -
	 * Pos: Libera los recursos intanciados.
	 */
	virtual ~IndiceHash();

	/*
	 * Pre: -
	 * Pos: Devuelve el numero de componente.
	 */
	virtual bool getNumComponente(Key clave,offset& numComponente);

	/*
	 * Pre: -
	 * Pos: Agrega la clave.
	 */
	virtual bool agregar(Key clave, offset numComponente);

	/*
	 * Pre: -
	 * Pos: Quita la clave.
	 */
	virtual bool quitar(Key clave, offset& numComponente);

	/*
	 * Pre: -
	 * Pos: Devuelve true si existe la clave.
	 */
	bool existeClave(Key clave);

	/*
	 * Pre: -
	 * Pos: Visualiza el indice.
	 */
	virtual void visualizar();
};

#endif /* INDICEHASH_H_ */
